Many electronic apparatus make use of embedded memory devices. Often, the embedded memory device includes non-volatile memory such as flash memory. An electronic apparatus that includes an embedded memory device (or is connected to a memory device) is often referred to as a host.
The process of a host starting operation and entering a state of readiness for intended operation is called “booting” or a “boot process.” A host typically has a ROM (Read Only Memory) which stores code to start the boot process. When a host is turned on or restarted, it will execute the code stored in the ROM which will instruct the host to read boot data from a dedicated portion of the embedded memory device. The boot data, which can include code as well as reference information (e.g., integers, floating point numbers, characters, words, pointers, etc.), will be used by the host to perform a boot process.
One example of an embedded memory device is an embedded MultiMediaCard (“eMMC”), which implements a MultiMediaCard (“MMC”) interface. Some eMMC devices includes two boot partitions. Each boot partition is capable of storing all of the boot data needed to perform a boot process. This way, if one of the boot partitions gets corrupted, the host can use the other boot partition to perform the boot process. The MMC interface provides for the ability of the host to send a command to the eMMC device to switch boot partitions. However, some hosts do not include the code for sending the command to the eMMC device to switch boot partitions within the ROM because the ROM is not big enough to hold the extra code and engineers often want the ROM code to be as simple as possible to reduce the chance of errors. In cases where the code for sending the command to the eMMC device to switch boot partitions is not stored in the ROM, then when a currently being used boot partition gets corrupted the host may not be able to boot.